#pragma once
#ifndef __PREDATOR_HEADER__
#define __PREDATOR_HEADER__

#include "Agent.hpp"
#include "PropertyManager.hpp"

//////////////////////////////////////////////////////////////////////////

class Predator : public Agent
{
protected:
	static int _id;
	Ogre::Entity* _model;
	Ogre::AnimationState* _animationState;
	virtual vec3 calcSteeringForce(float dt);

public:
	Predator(const vec3& pos = vec3::ZERO);
	~Predator();

	virtual AgentType getType() const { return AGENT_PREDATOR; }

	virtual float getMass() const { return PM.predator.mass->getRealValue(); }
	virtual float getRadius() const { return PM.predator.radius->getRealValue(); }
	virtual float getMaxVelocity() const { return PM.predator.maxVelocity->getRealValue(); }
	virtual float getTurnRate() const { return PM.predator.turnRate->getRealValue(); }

	virtual void update(float dt);
	virtual void draw() const;
};

//////////////////////////////////////////////////////////////////////////

#endif // #ifndef __PREDATOR_HEADER__